package com.softeem.work;

import java.io.File;
import java.util.Scanner;

/**
 * 4.从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印
 * 	例如:
 * 	aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,有eee这样的文件夹,
 * 	eee中有fff.txt和ggg.txt,打印出层级来
 * 	aaa
 * 		bbb.txt
 * 		ccc.txt
 * 		ddd.txt
 * 		eee
 * 			fff.txt
 * 			ggg.txt
 */
public class T4 {
    /**
     * 对文件夹以及文件信息进行打印
     * @param file 传入的文件夹地址
     * @param count 对层级进行计数累加
     */
    public static void fun(File file, int count){
        //如果是一个文件夹,那么目录的层次就多一层,计数累加就要多打印一个空格
        if(file.isDirectory()){
            //层级的累加
            count++;
            //使用循环来打印空格,不换行打印
            for(int i = 0; i < count; i++){
                System.out.print(" ");
            }
            System.out.println(file.getName());
            //找里面的子文件以及子文件夹
            File[] fs = file.listFiles();
            for(File f : fs){
                fun(f,count);
            }
        }else{
            for(int i = 0; i < count + 1; i++){
                System.out.print(" ");
            }
            System.out.println(file.getName());
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入文件路径:");
        String path = sc.next();
        //定义一个文件对象
        File dir = new File(path);
        //判断文件夹是否存在并且判断是否是一个文件夹
        if(dir.exists() && dir.isDirectory()){
            fun(dir,0);//第二个参数对文件夹的层数进行计数
        }else{
            System.out.println("当前你输入的路径不存在");
        }
    }
}
